Silly mother fucking me. Can't find the kata code ;(
Instead here is the raw boduka code. Enjoy
more budoka.c
// std/guilds/budokas.c
//
/*
* Date Creator Comment
* ------------ --------------- -----------------------------------------
* 1997 Feb 18 Hellbent added titles for 300-400th level.
* 1996 Jul 25 Laggard new query_level_skill,
* with same proportions as before.
* 1996 Jul 10 lotus change levels to ( f * 3 + c * 2 ) / 4
* 1996 Jul 08 Laggard eliminate (non-existant) starting position.
* eliminate some unused code.
* some formatting.
* replace set_new_level with setup_level.
* removed set_hp and _gp to monster (duplicated).
* include guild.h!
* 10 May 96 Agamemnon Modified to use new skill hierarchy
* 04 Nov 97 Hellbent Added the new 'kata' command.
* 07 Nov 97 Hellbent fixed commands to use new dir structure
* 12 Nov 97 Hellbent Added 'unhide'
* 04 Jan 98 Darsis Removed Ambush
* 24 Jan 99 Darsis Increased xp to max
* December Hawk changed * December Hawk changed from budoka to budoka
* 06 Apr 00 Darsis Increased xp to max to about 290 million
*/
#include
inherit GUILD_STANDARD;
inherit "/std/living/effects.c";
#include "bud.h"
//#include
//#include "weapon.h"
void setup_budoka(object ob);
void setup()
{
set_name("budoka");
set_short("Budoka's Guild");
set_long(
"The budoka's guild gives you some fighting skills,"
" along with some very stealthy combat maneuvers,"
" and even some special magic.\n\n"
" To join the guild,"
" you must be one of the following races:"
"\nHuman, Elf, Orc, or Halfling.\n");
reset_get();
}
void set_gp( object ob )
{
ob->set_max_gp( ob->query_skill( "fighting.combat.melee" )+
ob->query_skill( "covert" ) + ob->query_skill( "mental.points" ) + 10 );
}
string query_gp_regen_stat() { return "dex"; }
mapping query_level_skill()
{
return ([
"primary" : "fighting",
"secondary" : "covert"
]) ;
}
#ifndef GUILD_AUTO
int query_level(object ob)
{
return ((int)ob->query_skill("fighting") * 3
+ (int)ob->query_skill("covert") * 2) / 4;
}
#endif
/* this figures out how much the given skill will cost to advance in
* It returns a multipler. 10 is normal.
*/
int query_skill_cost(string skill) {
string *bits;
bits = explode(skill, ".");
switch( bits[0] ){
case "covert": return 25;
case "faith": return 20;
case "fighting": return 29;
case "general": return 18;
case "magic": return 20;
case "occult": return 20;
case "mental": return 25;
default: return 20;
}
}
/* returns the maximun level that you are allowed to advance in the
* given skill.
*/
int query_skill_max_level(string skill) {
string *bits;
bits = explode(skill, ".");
switch( bits[0] ){
case "covert": return 200;
case "faith": return 5;
case "fighting": return 300;
case "mental": return 25;
case "general":
if ( sizeof( bits ) > 1 ) switch( bits[1] ){
case "evaluating": return 200;
case "searching":
case "perception": return 200;
case "smithing": return 200;
case "movement":
if ( sizeof( bits ) > 2 ) switch( bits[2] ){
case "swimming": return 200;
case "climbing": return 200;
}
}
return 20;
case "magic": return 5;
case "occult": return 5;
default: return 15;
}
}
string query_cast_word() { return "focus"; }
string query_title(object player) {
int level, u_skill, sh_skill, bl_skill;
u_skill = player->query_skill( "fighting.combat.melee.unarmed" );
sh_skill = player->query_skill( "fighting.combat.melee.sharp" );
bl_skill = player->query_skill( "fighting.combat.melee.blunt" );
level = query_level(player);
if( player->query_property( "com_list" ) &&
player->query_property( "com_list" )["third"] == "hide" )
{
switch(level){
case 0..14: return "the Young Budoka"; break;
case 15..24: return "the Budoka"; break;
case 25..29: return "the Initiate of Ninjutsu"; break;
case 30..39: return "the Disciple of Ninjutsu"; break;
case 40..49: return "the Novice of Ninjutsu"; break;
case 50..64: return "the Silent Strider"; break;
case 65..79: return "the Shadowlurker"; break;
case 80..89: return "the Shadow Walker"; break;
case 90..99: return "the Shodan of the Unseen Arts"; break;
case 100..119: return "the Nidan of the Unseen Arts"; break;
case 120..139: return "the Sandan of the Unseen Arts"; break;
case 140..159: return "the Yodan of the Unseen Arts"; break;
case 160..189: return "the Godan of the Unseen Arts"; break;
case 190..219: return "the Rokudan of the Unseen Arts"; break;
case 220..249: return "the Shidan of the Unseen Arts"; break;
case 250..279: return "the Shadow"; break;
case 280..294: return "the Silent Shadow"; break;
case 295..314: return "the Artisan of the Shadow"; break;
case 315..329: return "the Silent Warrior"; break;
case 330..349: return "the Master of the Shadows"; break;
case 350..359: return "the Master of the Unseen Arts"; break;
case 360..369: return "the Master of Silent Death"; break;
case 370..389: return "the Sensei of Shadow"; break;
case 390..400: return "the Grand Master of Ninjutsu"; break;
default:
if( u_skill > sh_skill && u_skill > bl_skill )
return "the Shadow Warrior";
if( sh_skill > u_skill && sh_skill > bl_skill )
return "the Night Blade";
if( bl_skill > u_skill && sh_skill < bl_skill )
return "the Shadow Master of Bojutsu";
return "the Grand Master of Silent Death";
break;
}
}
else
{
switch(level){
case 0..14: return "the Young Budoka"; break;
case 15..29: return "the Budoka"; break;
case 30..44: return "the Ryu Initiate"; break;
case 45..59: return "the Ryu Novice"; break;
case 60..74: return "the Ryu Disciple"; break;
case 75..89: return "the Bushi"; break;
case 90..104: return "the Ashigaru"; break;
case 105..119: return "the Shodan"; break;
case 120..134: return "the Nidan"; break;
case 135..149: return "the Sandan"; break;
case 150..164: return "the Yodan"; break;
case 165..179: return "the Godan"; break;
case 180..194: return "the Rokudan"; break;
case 195..209: return "the Nanadan"; break;
case 210..229: return "the Practioner of Sado"; break;
case 230..249: return "the Chajin"; break;
case 250..269: return "the Chi Shaper"; break;
case 270..289: return "the Spirit Walker"; break;
case 290..309: return "the Chi Warrior"; break;
case 310..329: return "the Go Master"; break;
case 330..349: return "the Enlightened"; break;
case 350..359: return "the Renshi"; break;
case 360..379: return "the Kyoshi"; break;
case 380..399: return "the Hanshi"; break;
default :
if( u_skill > bl_skill && u_skill > sh_skill )
return "the Grand Master Of Taijutsu";
if( sh_skill > u_skill && sh_skill > bl_skill )
return "the Tachi of the Empire";
if( bl_skill > u_skill && sh_skill < bl_skill )
return "the Tetsubo of Destruction";
return "the Phantom Executioner";
break;
}
}
return "the Applicant to Ninjitsu";
}
// setup monsters only
void setup_level( object who, int new_level )
{
if (!who)
{
return;
}
::setup_level( who, new_level );
// some skills already done by default in standard
// who->add_skill_level("fighting", new_level);
// who->add_skill_level("general", new_level);
who->add_skill_level("covert", new_level);
who->adjust_bonus_str(4);
who->adjust_bonus_dex(3);
who->adjust_bonus_int(-2);
who->adjust_bonus_wis(-3);
if (new_level > 100)
{
who->adjust_bonus_str(1);
who->adjust_bonus_dex(2);
who->adjust_bonus_wis(1);
}
}
int query_skill_bonus( int x, string str)
{
int mult, time_affect, num, skill_stuff;
object player;
player = previous_object();
if( str == "fighting" ) return 0;
if( !player->query_property( STYLE_USED ) ) return 0;
skill_stuff = ( player->query_skill( "covert" ) + player->
query_skill( "fighting" ) ) / 2 + player->query_skill( "mental" );
/*
Hawk - make it so you have to age a bit before you get the full
benefit of this ability
*/
if( time_affect = player->query_effect_arg( "bud_time" ) )
skill_stuff = ( skill_stuff * time_affect ) / 4;
num = sizeof( player->query_property( STYLE_USED ) );
skill_stuff = skill_stuff / num;
foreach( string type in player->query_property( STYLE_USED ) )
{
mult = player->query_property( STYLE_PROPERTY )[type];
switch( type )
{
case "kenjutsu":
if( strsrch( str, "sharp" ) + 1 )
return ( skill_stuff * mult) / 6;
break;
case "daisho":
if( strsrch( str, "parry" ) + 1 )
return ( ( skill_stuff * mult ) / 3 );
break;
case "taijutsu":
if( strsrch( str, "unarmed" ) + 1 )
return ( skill_stuff * mult) / 6;
break;
case "mizu-do":
if( strsrch( str, "dodging.melee" ) + 1 )
return ( skill_stuff * mult + 1 )/2;
break;
case "tsuchi-do":
if( strsrch( str, "blunt" ) + 1 )
return ( skill_stuff * mult ) / 6;
break;
case "kaze-do":
if( strsrch( str, "thrown" ) + 1 )
return ( skill_stuff * mult ) / 5;
break;
case "kakuremi":
if( strsrch( str, "hiding" ) + 1 )
return ( skill_stuff * mult )/3;
break;
default: return 0;
}
}
return 0;
}
void start_player(){
setup_budoka(TP);
::start_player();
}